package com.tedu.api.io;

import java.io.Serializable;
import java.util.Arrays;

/**
 * 高级流   专门传输   对象   xxx.java文件
 *
 * ObjectOutputStream  对象输出流
 * ObjectInputStream  对象输入流
 *
 * 以上两个流专门传输:对象功能
 *
 * Person,java文件--先做对象传输处理
 * 步骤:1.对象添加接口-->Serializable 序列化接口 【对象转换为二进制】
 * 2.设置版本号:按照正确方式将对象转换为二进制,二进制可以转换为对象
 */
public class Person implements Serializable{
    //版本号  决定类反序列化成功的唯一标识  版本号固定写法  静态不可改变值保存
    //用法:一旦修改类  重新生成一个版本号  建议写死并抛出异常
    //               类结构发生变化，类实现序列化接口，自动存在静态不可改变值保存
    //类---版本更新---版本号确定更新版本!

    private static final long serialVersionUTD=3L;
    //私有属性
    /**
     * transient关键字 --程序瘦身
     * 作用：只出现在序列化接口  对象中有很多属性或方法
     *      每个方法一旦序列化，把每一组属性/方法---转换为二进制，浪费资源
     *      利用transient对象在序列化过程中，指定属性/方法不转换为字节
     */
    private String names;
    private String[] say;//属性 transient修饰则不会转为二进制

    public Person() {
    }

    public Person(String names, String[] say) {
        this.names = names;
        this.say = say;
    }

    public String getNames() {
        return names;
    }

    public void setNames(String names) {
        this.names = names;
    }

    public String[] getSay() {
        return say;
    }

    public void setSay(String[] say) {
        this.say = say;
    }

    @Override
    public String toString() {
        return "Person{" +
                "names='" + names + '\'' +
                ", say=" + Arrays.toString(say) +
                '}';


    }
}
